package com.yllt4cloud.ddauth.service.base;

import com.ffcs.icity.common.mybatis.Page;

import java.util.List;
import java.util.Map;


public interface IBaseService<T> {

	/**
	 * 
	 * <p><b>作用：</b>根据主键删除</p>
	 * <p><b>日期：</b>2015-4-11 上午10:18:53</p>
	 * <p><b>作者：</b>yaozq</p>
	 * @param id
	 * @return
	 * @exception
	 */
	public int deleteByPrimaryKey(int id);

	/**
	 * 
	 * <p><b>作用：</b>插入数据</p>
	 * <p><b>日期：</b>2015-4-11 上午10:19:10</p>
	 * <p><b>作者：</b>yaozq</p>
	 * @param record
	 * @return
	 * @exception
	 */
	public Integer insert(T record);

//	/**
//	 *
//	 * <p><b>作用：</b>插入数据部分字段</p>
//	 * <p><b>日期：</b>2015-4-11 上午10:19:19</p>
//	 * <p><b>作者：</b>yaozq</p>
//	 * @param record
//	 * @return
//	 * @exception
//	 */
//	public Long insertSelective(T record);

	/**
	 * 
	 * <p><b>作用：</b>根据主键查询</p>
	 * <p><b>日期：</b>2015-4-11 上午10:19:41</p>
	 * <p><b>作者：</b>yaozq</p>
	 * @param id
	 * @return
	 * @exception
	 */
	public T selectByPrimaryKey(int id);

	/**
	 * 
	 * <p><b>作用：</b>根据主键部分更新</p>
	 * <p><b>日期：</b>2015-4-11 上午10:20:00</p>
	 * <p><b>作者：</b>yaozq</p>
	 * @param record
	 * @return
	 * @exception
	 */
	public int updateByPrimaryKeySelective(T record);

	/**
	 * 
	 * <p><b>作用：</b>根据主键全部更新</p>
	 * <p><b>日期：</b>2015-4-11 上午10:20:04</p>
	 * <p><b>作者：</b>yaozq</p>
	 * @param record
	 * @return
	 * @exception
	 */
	public int updateByPrimaryKey(T record);

//	/**
//	 * <p><b>作用：</b>批量更新部分数据数据</p>
//	 * <p><b>日期：</b>2018-10-16 下午4:36:25</p>
//	 * <p><b>作者：</b>曹历历</p>
//	 * @param list
//	 * @return
//	 * @exception
//	 */
//	public int updateBatchSelective(List<T> list);
	
	/**
	 * 
	 * <p><b>作用：</b>不分页查询</p>
	 * <p><b>日期：</b>2015-4-11 上午10:20:11</p>
	 * <p><b>作者：</b>yaozq</p>
	 * @param paramMap
	 * @return
	 * @exception
	 */
	public List<T> queryList(Map<String, Object> paramMap);
	
	/**
	 * 
	 * <p><b>作用：</b>分页查询</p>
	 * <p><b>日期：</b>2015-4-11 上午10:20:15</p>
	 * <p><b>作者：</b>yaozq</p>
	 * @param paramMap
	 * @param page
	 * @return
	 * @exception
	 */
	public Page<T> queryPage(Map<String, Object> paramMap, Page<T> page);
	
	/**
	 * 
	 * <p><b>作用：</b>批量插入</p>
	 * <p><b>日期：</b>2016-1-25 上午10:39:56</p>
	 * <p><b>作者：</b>yaozq</p>
	 * @param list
	 * @return
	 * @exception
	 */
	public int insertBatch(List<T> list);
	
	/**
	 * 
	 * <p><b>作用：</b>批量删除</p>
	 * <p><b>日期：</b>2016-1-25 上午10:40:06</p>
	 * <p><b>作者：</b>yaozq</p>
	 * @param paramMap
	 * @return
	 * @exception
	 */
	public int deleteBatch(Map<String, Object> paramMap);
	
	/**
	 * 查询主键集合
	 * <p><b>作用：</b></p>
	 * <p><b>日期：</b>2016-1-25 下午3:04:15</p>
	 * <p><b>作者：</b>yaozq</p>
	 * @param paramMap
	 * @return
	 * @exception
	 */
	public List<Integer> queryIds(Map<String, Object> paramMap);

    /**
     * 查询数据条数
     * <p><b>作用：</b></p>
     * <p><b>日期：</b>2016-1-25 下午3:04:15</p>
     * <p><b>作者：</b>yaozq</p>
     * @param paramMap
     * @return
     * @exception
     */
    int queryByCount(Map<String, Object> paramMap);
}
